package com.inews.business.service;

import java.util.List;
import java.util.Map;

import org.springframework.data.domain.Pageable;
import com.inews.base.security.vo.BaseUserVo;
import com.inews.base.vo.ExtData;
import com.inews.business.vo.SysRoleVo;
import com.inews.business.vo.SysUserVo;


public interface SysUserService {
	
	
	
	/**
	 * 分页查询系统用户.
	 *
	 * @param filterParams the filter params
	 * @param page the page
	 * @return the ext data
	 */
	public ExtData<SysUserVo> findSysUserPage(Map<String, Object> filterParams, Pageable page);
	
	
	
	/**
	 * 新增系统用户信息.
	 *
	 * @param vo the vo
	 * @param user the user
	 * @return the ext data
	 */
	public ExtData<SysUserVo> saveSysUser(SysUserVo vo, BaseUserVo user);
	
	
	
	/**
	 * 更新系统用户.
	 *
	 * @param vo the vo
	 * @param user the user
	 * @return the ext data
	 * @throws Exception the exception
	 */
	public ExtData<SysUserVo> updateSysUser(SysUserVo vo, BaseUserVo user);
	
	
	
	/**
	 * 删除系统用户.
	 *
	 * @param vo the vo
	 * @param user the user
	 * @return the ext data
	 */
	public ExtData<SysUserVo> deleteSysUser(SysUserVo vo, BaseUserVo user);
	
	
	
	/**
	 * 根据用户Id查询对应的角色信息.
	 *
	 * @param userId the user id
	 * @throws Exception the exception
	 */
	public ExtData<SysRoleVo> findRoleByUser(SysUserVo vo);
	
	
	
	/**
	 * 分配用户角色.
	 *
	 * @param vo the vo
	 * @param roleVoList the role vo list
	 * @param user the user
	 * @return the ext data
	 */
	public ExtData<SysUserVo> chooseRole(SysUserVo vo, List<SysRoleVo> roleVoList, BaseUserVo user);

	/**
	 * 重置密码
	 * @param vo
	 * @param user
	 * @return
	 * @throws Exception
	 */
	ExtData<SysUserVo> doResetPassword(SysUserVo vo, BaseUserVo user);
	
	
}
